RubyKaigi 2022 Day 2 Caching With MessagePack
Caching
Application
actions
pages
fragments
queries
responses
↕
one cache layer
↕
memory
file
redis
memcached
Marshal vs MessagePack
About Marshal
Marshal.dump(instance)
Marshal.load
marshal.c
version
MAJOR
MINOR
atmic
composite
TYPE_OBJECT
その他謎のモノたち
Marshalはinstance variableもシリアライズする
謎のモノのうちひとつがそれを担っている
TYPE_IVAR
Marshalはlink(参照)もシリアライズする
謎のモノのうちひとつがそれを担っている
TYPE_LINK
Marshalは継承もシリアライズする
謎のモノのうちひとつがそれを担っている
TYPE_UCLASS
MessagePack.pack
MessagePack.unpack
MessagePack Types
No Object Type
No ivar Type
MessagePack Extension Types
factory.register_type()
type number
Class
packer
Array#pack
unpacker
Array#unpack
factory.dump
version byte prefix + MSGPACK
rescue NoMethodError
Marshal.dump
00
Symbol
Time
DateTime
Date
BigDecimal
01
attributes
associations
records
02
Hash
core sub types
03
7f
Object
感想
yuiseki.icon
MarshalはRubyのほぼすべてをシリアライズできるが富豪的すぎる
Marshalの代わりにMessagePackをつかってRailsのCache機構を作っている
MessagePackは効率化のために制約が多いが、RailsのCacheに必要なぶんだけ拡張している
ActiveRecord前提のようだけどMongoidとの互換性はあるんだろうか?